1. Field of the Invention
The present invention relates to controllers and rule-based expert control systems using fuzzy logic and parallel processing for controlling devices.
2. Description of the Related Art
Control systems and computer-controlled electronic devices have historically been controlled by digital control systems. Such control systems use bi-state digital logic which requires a value of either "TRUE" or "FALSE" so that approximations are often required of real-world control problems. For example, an input/output relationship y=f(x) would be specified either as a mathematical function or as a series of points using, for example, a look-up table: the former use of a mathematical function may require complex mathematics to accurately represent real-world control problems; further, the latter use of a look-up table, such as a ROM, introduces problems such as large memory requirements for adequate approximation, the concomitant addressing function associated with large memories, as well as interpolation problems.
For example, FIG. 1A shows an exemplary nonlinear sigmoidal function y=f(x). If digital logic was used to characterize the function y=f(x), it would be necessary to approximate the function shown in FIG. 1A by using discrete values, y.sub.i =a.sub.i .multidot.x.sub.i (i=1, 2, . . . , n) , as shown in FIG. 1B. Since the number n of "crisp" values is limited, there inherently exists an interpolation error for values of x between x.sub.i and x.sub.i+1. The term "crisp" refers to an input having a single discrete value. In addition, it becomes impractical to write a rule for every input combination where there exists a large number of inputs whose values can cover a wide input range.
An alternative approach to control theory, known as "fuzzy logic" was developed by L Zadeh in 1963. Rather than evaluating the two values "TRUE" and "FALSE" as in digital logic, fuzzy terms admit to degrees of membership in multiple sets so that fuzzy rules may have a continuous, rather than stepwise, range of truth of possibility. For example, in applying fuzzy logic, a person need not strictly be included or excluded as a member from a set of "tall persons"; rather, to the extent a person may be "tall" to a greater or lesser degree, the member is assigned to the set with a degree of membership between the values of "1" and "0".
FIG. 1C illustrates the principle of fuzzy logic in evaluating the function illustrated in FIG. 1A. The function f(x) is approximated by a plurality of fuzzy sets 10 which overlap. Rather than approximating a continuous value x by a discrete value x.sub.i, fuzzy logic determines for a given value x whether the value x is nearest to the center of a fuzzy set 10. If an x value is equidistant from two or more fuzzy sets, the resultant y value can be made proportional to the output values suggested by all the fuzzy sets of which the value x is a member. Thus, a fuzzy number may be two dimensional, having assigned fuzzy sets and corresponding membership values.
Since fuzzy logic can operate within the relative imprecision of the real-world environment, the advantages of fuzzy logic and fuzzy set theory have become apparent in numerous areas, such as robotics, natural language recognition, the automobile and aircraft industry, artificial intelligence, etc. Exemplary publications describing the theory and applications of fuzzy logic include Devi, B. B. et al., Estimation of Fuzzy Memberships from Histograms, Information Sciences, vol. 35, 1985, pp. 43-59; Braae, M. et al., Theoretical and Linguistic Aspects of the Fuzzy Logic Controller, Automatica, vol. 15, issue 5, 1979, pp. 553-77; Ralston, P. A. S., Fuzzy Logic Control of Machining, Manufacturing Review, vol. 3, no. 3, September 1990, pp. 147-154; Schwartz, Tom J., Fuzzy Tools for Expert Systems, AI Expert, February 1991, pp. 34-41; Kohoutek, H. J., Practice of Approximate Reasoning, Proceedings of Manufacturing International '90 (1990: Atlanta, Ga.) Vol. V: Design, Reliability, and Education of Manufacturability; Lee, Chuen C., Fuzzy Logic in Control Systems: Fuzzy Logic Controller--Parts I & II, IEEE Transactions on Systems, Man and Cybernetics vol. 20, issue 2, March/April 1990, pp. 404-418, 419-435; Mamdani, E. H., Application of Fuzzy Algorithms for Control of Simple Dynamic Plant, Proceedings of the IEEE, vol. 121, issue 12, December 1974, pp. 1585-1588; Tang, K. L. et al., Comparing Fuzzy Logic with Classical Controller Designs, IEEE Transactions on Systems, Man and Cybernetics, vol. 17, issue 6, November/December 1987, pp. 1085-1087; Zadeh, L. A., Fuzzy Sets, Information and Control, vol. 8, 1965, pp. 338-353; Zadeh, L. A., Outline of a New Approach to the Analysis of Complex Systems and Decision Processes, IEEE Transactions on Systems, Man and Cybernetics, vol. 3, issue 1, January 1973, pp. 28-44; and Ruspini, Enrique H., On the Semantics of Fuzzy Logic, International Journal of Approximate Reasoning 1991, vol. 5, pp. 45-86. These publications, which describe in detail the theory of fuzzy logic, are incorporated herein by reference.
The implementation of fuzzy logic for a controller has been suggested by Ralston et al. (1990). As shown in FIG. 2, a "universe of discourse" (e.g., a dimension of continuous values) is defined in step 20 for input and control variables. Membership functions are then defined in step 22 which determine the way observations of the variables are expressed as fuzzy sets. In other words, the fuzzy sets, which are subsets of the universe of discourse, are defined by their respective membership functions. A rule base is then formulated or constructed in step 24 to supply the logic that relates observations applied to the controller input to the required fuzzy control statements; a rule may have the format "IF (Alpha IS SMALL) AND (Beta IS MEDIUM) THEN Gamma IS BIG". A computational unit is then designed in step 26 that uses the rule base to logically obtain control statements from the fuzzy inputs; the computational unit will provide fuzzy outputs in response to the process observations, e.g., the fuzzy inputs. Finally, an action interface is defined in step 28 which will provide rules to translate fuzzy control statements into discrete, crisp values for the input variables applied to the input of the controlled device or process.
The implementation of fuzzy logic in control systems, while promising, has encountered numerous problems. For example, the construction of membership functions may be relatively difficult: the optimum membership function is related to sensor characteristics, control responses, and other dynamic factors. Thus, the determination of the optimum membership function in some cases may only be accomplished empirically. This difficulty in determining the membership function translates into the problem of properly classifying an input into the corresponding fuzzy set.
An additional problem of current fuzzy control systems is that the computational processing of the fuzzy logic is performed using conventional sequential processing via a microprocessor.
Such microprocessor-based systems use the classic von-Neumann architecture. Thus, the processing speed of the control system is limited by the processing speed of the microprocessor: this "von-Neumann bottleneck" severely limits processing speed as the required number of processing operations increases.
Highly parallel architectures which are faster than the von-Neumann architecture have recently been proposed by Lippman (1987). While these neural net classifiers are faster than the classic von-Neumann machine, the relatively large number of parallel connections in the neural net increases the size of an IC chip, and thus increases the overall cost of the system.
The fuzzy logic systems to date have only been implemented having a relatively small number of inputs. A fuzzy logic microcontroller must have the capacity to handle a large number of inputs, function in accordance with a large number of rules and provide an adequate number of outputs.
Further, more advanced applications of fuzzy logic may require a fuzzy logic microcontroller capable of processing complex membership functions that have varying parameters. For example, a fuzzy logic application may have a fuzzy set having a membership function that varies with respect to time or a given input parameter. Thus, unless the membership function can be defined on the basis of the varying parameter, the definition of the membership function Would need to be continually updated during processing, thereby adding substantial complexity to the fuzzifying process.
The fuzzy microcontroller in copending application 07/712,871 fuzzified a number of inputs and determined an optimum rule from a set of rules corresponding to an output. The optimum rule had a corresponding action value which was either output directly in an immediate mode or added as an offset to the previous output value in an accumulate mode: this step was known as defuzzifying the output signal. However, different fuzzy logic applications may have different desired outputs. For example, the copending application 07/712,871 disclosed an application combining a plurality of fuzzy microcontrollers by coupling the output of one microcontroller to the input of a second microcontroller; it would be desirable to directly output the fuzzy results of the first microcontroller as raw data for the second microcontroller. Further, it would be desirable to provide an output mode which outputs a result based upon the average of all the rules considered valid during the determination of the optimum rule.
Finally, the fuzzy microcontroller of copending application 07/712,871 cycled through a predetermined number of inputs during the fuzzification of the inputs using a predetermined number of fuzzifiers and a predetermined number of rules, regardless of the needs of the application. Consequently, the fuzzy microcontroller of copending application 07/712,871 would have the same throughput even if only one fuzzifier or one rule was being processed. It would be desirable to provide a timing system that minimized processing time by utilizing only those fuzzifier registers and rule registers necessary for processing.